﻿/*--------------------------------------------------------------------------------
 * Adaptive Intelligence - Foundation Framework Class Library
 * Version 2.00
 * 
 * Compression Methods Enumeration
 * 		Provides a list of algorithms that may be used to provide compression services.
 *------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------
 * System Imports
 *------------------------------------------------------------------------------*/
using System;

namespace Adaptive.Foundation.IO.Zip
{
    /// <summary>
    /// Provides a list of algorithms that may be used to provide compression services.
    /// </summary>
    public enum CompressionMethods : short
    {
        /// <summary>
        /// Indicates that the file is stored (no compression).
        /// </summary>
        Stored = 0,
        /// <summary>
        /// Indicates that the file is Shrunk.
        /// </summary>
        Shrunk = 1,
        /// <summary>
        /// Indicates that the file is Reduced with compression factor 1.
        /// </summary>
        ReducedCompressionFactor1 = 2,
        /// <summary>
        /// Indicates that the file is Reduced with compression factor 2.
        /// </summary>
        ReducedCompressionFactor2 = 3,
        /// <summary>
        /// Indicates that the file is Reduced with compression factor 3.
        /// </summary>
        ReducedCompressionFactor3 = 4,
        /// <summary>
        /// Indicates that the file is Reduced with compression factor 4.
        /// </summary>
        ReducedCompressionFactor4 = 5,
        /// <summary>
        /// Indicates that the file is Imploded.
        /// </summary>
        Imploded = 6,
        /// <summary>
        /// This value is reserved for Tokenizing compression algorithm.
        /// </summary>
        ReservedForTokenizing = 7,
        /// <summary>
        /// Indicates that the file is Deflated (.NET Compatible)
        /// </summary>
        Deflated = 8,
        /// <summary>
        /// Indicates that the file is compressed using enhanced deflate (using Deflate64).
        /// </summary>
        EnhancedDeflated = 9,
        /// <summary>
        /// Indicates that the file is compressed with the PKWARE Data Compression Library Imploding (old IBM TERSE).
        /// </summary>
        PkWareDataCompression = 10,
        /// <summary>
        /// Indicates that the file is compressed using BZIP2 algorithm
        /// </summary>
        BZip2 = 12,
        /// <summary>
        /// Indicates that the file is compressed using LZMA (EFS) algorithm.
        /// </summary>
        LZMA = 14,
        /// <summary>
        /// Indicates that the file is compressed using IBM TERSE (new).
        /// </summary>
        IbmTerse = 18,
        /// <summary>
        /// Indicates that the file is compressed with the IBM LZ77 z Architecture (PFS).
        /// </summary>
        IbmLZ77 = 19,
        /// <summary>
        /// Indicates WavPack compressed data.
        /// </summary>
        WavPack = 97,
        /// <summary>
        /// Indicates that the file is compressed with the PPMd version I, Rev 1 algorithm.
        /// </summary>
        PPMd = 98
    }
}
